package com.dapeis.im.tim;

import java.io.IOException;
import java.util.zip.DataFormatException;

import com.dapeis.core.utils.StringUtil;
import com.dapeis.exception.tim.TIMSignatureCheckException;
import com.dapeis.exception.tim.TIMSignatureException;
import com.dapeis.im.tim.tls.SigatureResultCheck;
import com.dapeis.im.tim.tls.SignatureResult;
import com.dapeis.im.tim.tls.TIMSigature;

/**
 * @author 作者 E-mail: hzyuanyong@126.com
 * @version 创建时间：2017年5月17日 下午4:22:37 TIM 签名类说明
 */
public class TIMSigUtil {

    /**
     * 生成签名
     * 
     * @param userName
     * @return
     * @throws IOException
     */
    public static final String getSigsignature(String userName) {
	SignatureResult reslut;
	try {
	    reslut = TIMSigature.GenTLSSignatureEx(TIMConfig.APPID, userName,
		    TIMConfig.PRIVATE_KEY);
	    if (StringUtil.isNotBlank(reslut.urlSig))
		return reslut.urlSig;

	} catch (IOException e) {
	    e.printStackTrace();
	}
	throw new TIMSignatureException();
    }

    /**
     * 有效 true
     * 失效 false
     * @param sig
     * @param userName
     * @return
     */
    public static final boolean checkSignature(String sig, String userName) {
	SigatureResultCheck resultCheck;
	try {
	    resultCheck = TIMSigature.CheckTLSSignatureEx(sig, TIMConfig.APPID,
		    userName, TIMConfig.PUBLIC_KEY);
	    if (resultCheck.verifyResult) {
		return true;
	    }
	} catch (DataFormatException e) {
	    e.printStackTrace();
	}
	throw new TIMSignatureCheckException();
    }

    public static void main(String[] args) {
	System.out.println(getSigsignature("dpsadmin"));
    }
}
